﻿// <copyright file="IEntity.cs" company="City of Portland, BES-ASM">
// </copyright>
// <summary>IEntity interface</summary>

namespace BESASM.EMGAATS.BusinessClasses
{
  using System;
  using System.Collections.Generic;
  using System.ComponentModel;
  using System.Linq;
  using System.Text;
  using System.Threading.Tasks;

  /// <summary>
  /// Interface for <see cref="Entity"/>
  /// </summary>
  public interface IEntity : ICloneable, INotifyPropertyChanged, IAuditable
  {
    /// <summary>
    /// Gets or sets the unique Id of this entity.
    /// </summary>
    int Id { get; set; }

    /// <summary>
    /// Gets the entity type for this entity.
    /// </summary>
    EntityType EntityType { get; }

    /// <summary>
    /// Gets or sets the network this entity belongs to.
    /// </summary>
    INetwork Network { get; set; }

    /// <summary>
    /// Gets a value indicating whether this entity has been modified.
    /// </summary>
    bool IsModified { get; }

    /// <summary>
    /// Sets the modified state of this entity.
    /// </summary>
    /// <param name="modified">A value indicating whether this entity is modified or not.</param>
    void SetModified(bool modified);
  }
}
